Introduction
The location I will explore in this project is the Boston-Cambridge-Newton CBSA. Specifically, I will examine the trends in data when comparing the inner-city Boston area with the outskirts. Below is a map of this area with labelled counties. I will use the term “inner-city” to refer to Suffolk County, shown below in pink. This is the county with the highest population density among all counties studied, with approximately 13,179 people per square mile. (Social Explorer, 2018)

Income and Rent Affordability
Considering the high cost of living in Suffolk County, the next practical question is whether the average person in these locations can actually afford such a high price. To examine this question, I have plotted the incomes of people in the Boston-Cambridge-Newton area by the county in which they reside. Although Suffolk County generally seems to be the most expensive place to live of out of the counties studied, Suffolk County also has the highest percentage of people with the lowest bracket income at approximately 7%. Other counties tend to have less than half of this percentage of people living on the lowest bracket income. Interestingly, it appears that the counties with the highest percentage of people earning the highest bracket income are Norfolk and Middlesex County, which are located directly outside of the Suffolk County area. The high percentage of people living on the lowest bracket income in Suffolk County may be indicative of a predominantly poor neighborhood near the Roxbury/Dorchester area, which can be seen on the previous graph in the small cluster of red data points just below the “Boston” tag (Harvard, 2018). The Roxbury neighborhood in particular has a high percent of people living in poverty, at approximately 36.2% in a report from a five-year estimate between 2008-2012 (BRA Research Division, 2014). Suffolk County also has the lowest median household income out of the studied counties, at approximately 54,432 2016 inflation-adjusted US dollars. Meanwhile, Norfolk County has the highest median household income out of the studied counties, at approximately 90,226 2016 inflation-adjusted US dollars (Social Explorer, 2018).

Race
Having noted the income differences in the set of counties in the Boston-Cambridge-Newton area, the final question to explore is if there are differences in the distribution of people identifying as different races among the counties, especially between the inner-city and surrounding areas. As shown below, each of the counties have a predominantly white population, with Rockingham and Strafford County being the least diverse of the set. Suffolk County, on the other hand, is the most racially diverse in the Boston-Cambridge-Newton area, with approximately 55.4% of the population being White alone, 22.6% Black/African-American, 8.6% Asian alone, 6.2% two or more races, and 6.9% other (Social Explorer, 2018). The categories not mentioned (Pacific Islander and Indigenous American) did not sum to a significant portion of the population, as evident in the visualizations for all studied counties.

Conclusion
Drawing from the visualizations and analysis above, several conclusions can be made about the Boston-Cambridge-Newton area. Specifically, many outstanding differences exist between inner-city Boston (Suffolk County) and the surrounding areas. In the first visualization, it was shown that the median rent is generally higher in Suffolk County than in the other counties. This was expected in the data, as metropolitan areas are known to have higher-cost housing. In the second visualization, relationships between the percent of people living under certain income brackets and the county in which they live were explored. It was found that Suffolk County, the inner-city, has the highest percent of people living under the lowest income bracket. This could possibly be representative of the people living in certain poor neighborhoods within the city of Boston. Alternatively, Norfolk and Middlesex Counties had a rather high percentage of people living under the largest income bracket as compared to the other counties. Lastly, racial differences in the population were explored in each county. The final visualization shows that Suffolk County has the largest diversity in race among all studied counties, while the populations of Rockingham and Stafford Counties are overwhelmingly white with very little diversity.
References
Data & Analysis References:
Social Explorer ACS 2016 5-year Estimates. Social Explorer, 2018. (https://www.socialexplorer.com/tables/ACS2016_5yr/R11613828)
Boston Globe, “Housing for Middle Class Families in Boston is a Struggle”. Horowitz, 2015. (https://www.bostonglobe.com/business/2015/07/02/how-expensive-housing-boston/P7CWoHv30xvz2jJ9M9YMhP/story.html)
Boston Magazine, “”(https://www.bostonmagazine.com/property/2018/02/20/minimum-salary-own-apartment-boston/)
Money (Time Inc.), “10 Most Expensive Cities to be a Renter”. Renzulli, 2016. http://time.com/money/4287132/most-expensive-cities-to-rent/
Boston Redevelopment Authority (Research Division), “Poverty in Boston”. BRA Research Division, 2014. (http://www.bostonplans.org/getattachment/f1ecaf8a-d529-40b6-a9bc-8b4419587b86)
Harvard School of Public Health, “Boston Neighborhood Borders”. Harvard, 2018. (https://www.hsph.harvard.edu/diversity/neighborhood-maps/)
Code References:
Convex Hulls to show locations of each county: https://gist.github.com/rmaia/5296401
Color themes: http://www.cookbook-r.com/Graphs/Colors_(ggplot2)/
Pie charts: http://ggplot2.tidyverse.org/reference/coord_polar.html, https://stackoverflow.com/questions/22243860/how-to-remove-coordinate-in-pie-chart-generated-by-ggplot2
LS0tCnRpdGxlOiAiQm9zdG9uLUNhbWJyaWRnZS1OZXd0b24gQ0JTQSBJbm5lci1DaXR5IHZzLiBTdXJyb3VuZGluZyBBcmVhIgphdXRob3I6ICJSeWFuIEplbm5pbmdzIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBGQUxTRSkKa25pdHI6Om9wdHNfY2h1bmskc2V0KG1lc3NhZ2UgPSBGQUxTRSkKa25pdHI6Om9wdHNfY2h1bmskc2V0KHdhcm5pbmcgPSBGQUxTRSkKa25pdHI6Om9wdHNfY2h1bmskc2V0KGZpZy5oZWlnaHQgPSA1KQprbml0cjo6b3B0c19jaHVuayRzZXQoZmlnLndpZHRoID0gOC41KQprbml0cjo6b3B0c19jaHVuayRzZXQob3V0LndpZHRoID0gIjEwMCUiKQprbml0cjo6b3B0c19jaHVuayRzZXQoZHBpID0gMzAwKQoKbGlicmFyeShyZWFkcikKbGlicmFyeShnZ3Bsb3QyKQpsaWJyYXJ5KGRwbHlyKQpsaWJyYXJ5KHBseXIpCmxpYnJhcnkoZ2dtYXApCmxpYnJhcnkodmlyaWRpcykKbGlicmFyeShmb3JjYXRzKQpsaWJyYXJ5KHNtb2RlbHMpCmxpYnJhcnkocmVzaGFwZTIpCmBgYAoKCmBgYHtyfQojIEFsbCBkYXRhCnRyYWN0cyA8LSByZWFkX2NzdigiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3N0YXRzbWF0aHMvc3RhdF9kYXRhL2doLXBhZ2VzL2Fjc190cmFjdF9kYXRhXzIwMTYuY3N2Lmd6IikKCiMgQm9zdG9uL0NhbWJyaWRnZS9OZXd0b24gZGF0YQphY3NfYm9zdG9uIDwtIGZpbHRlcih0cmFjdHMsIGNic2EgPT0gIkJvc3Rvbi1DYW1icmlkZ2UtTmV3dG9uLCBNQS1OSCIpCgojIFN1YnNldCBvZiBkYXRhIG9uIGVhY2ggY291bnR5IGZvciBjb252ZXggaHVsbCBjb3VudHkgZ3JhcGgKYWNzX2Jvc3Rvbl9jb3VudHkgPC0gc2VsZWN0KGFjc19ib3N0b24sIGNvdW50eSwgbG9uLCBsYXQpCgojIEZvciBjb252ZXggaHVsbCByZXByZXNlbnRhdGlvbiBvZiBjb3VudGllcyB3aXRoaW4gdGhlIHN0dWRpZWQgYXJlYQpkYXRhZiA8LSBkYXRhLmZyYW1lKAogIHggPSBybm9ybSgxMDApLAogIHkgPSBjKHJub3JtKDUwLC0xKSwgcm5vcm0oNTAsMSkpLAogIGNhdCA9IHJlcChjKCJBIiwiQiIpLCBlYWNoPTUwKQogICkKCmFjc19ib3N0b25fY291bnR5X2NodWxscyA8LSBkZHBseShhY3NfYm9zdG9uX2NvdW50eSwgLihjb3VudHkpLCBmdW5jdGlvbihkZikgZGZbY2h1bGwoZGYkbG9uLCBkZiRsYXQpLCBdKQoKIyBJbmNvbWUgZGF0YSBzdW1tYXJpemVkIGJ5IGNvdW50eQphY3NfaW5jb21lX3RlbXAgPC0gc2VsZWN0KGFjc19ib3N0b24sIGNvdW50eSwgc3RhcnRzX3dpdGgoImluY29tZV8iKSkKYWNzX2luY29tZV90ZW1wIDwtIHN1bW1hcml6ZV9hbGwoZ3JvdXBfYnkoYWNzX2luY29tZV90ZW1wLCBjb3VudHkpLCBtZWFuKQphY3NfaW5jb21lIDwtIG1lbHQoYWNzX2luY29tZV90ZW1wLCBpZCA9IGMoImNvdW50eSIpKQoKIyBSYWNlIGRhdGEgc3VtbWFyaXplZCBieSBjb3VudHkKYWNzX3JhY2VfdGVtcCA8LSBzZWxlY3QoYWNzX2Jvc3RvbiwgY291bnR5LCBzdGFydHNfd2l0aCgicmFjZV8iKSkKYWNzX3JhY2VfdGVtcCA8LSBzdW1tYXJpemVfYWxsKGdyb3VwX2J5KGFjc19yYWNlX3RlbXAsIGNvdW50eSksIG1lYW4pCmFjc19yYWNlIDwtIG1lbHQoYWNzX3JhY2VfdGVtcCwgaWQgPSBjKCJjb3VudHkiKSkKCmBgYAoKIyMgSW50cm9kdWN0aW9uCgpUaGUgbG9jYXRpb24gSSB3aWxsIGV4cGxvcmUgaW4gdGhpcyBwcm9qZWN0IGlzIHRoZSBCb3N0b24tQ2FtYnJpZGdlLU5ld3RvbiBDQlNBLiBTcGVjaWZpY2FsbHksIEkgd2lsbCBleGFtaW5lIHRoZSB0cmVuZHMgaW4gZGF0YSB3aGVuIGNvbXBhcmluZyB0aGUgaW5uZXItY2l0eSBCb3N0b24gYXJlYSB3aXRoIHRoZSBvdXRza2lydHMuIEJlbG93IGlzIGEgbWFwIG9mIHRoaXMgYXJlYSB3aXRoIGxhYmVsbGVkIGNvdW50aWVzLiBJIHdpbGwgdXNlIHRoZSB0ZXJtICJpbm5lci1jaXR5IiB0byByZWZlciB0byBTdWZmb2xrIENvdW50eSwgc2hvd24gYmVsb3cgaW4gcGluay4gVGhpcyBpcyB0aGUgY291bnR5IHdpdGggdGhlIGhpZ2hlc3QgcG9wdWxhdGlvbiBkZW5zaXR5IGFtb25nIGFsbCBjb3VudGllcyBzdHVkaWVkLCB3aXRoIGFwcHJveGltYXRlbHkgMTMsMTc5IHBlb3BsZSBwZXIgc3F1YXJlIG1pbGUuIChTb2NpYWwgRXhwbG9yZXIsIDIwMTgpIAoKYGBge3J9CiMgVGhpcyBpcyBub3Qgb25lIG9mIG15IHRocmVlIGdyYXBocywgdGhpcyBpcyBqdXN0IHRvIHNob3cgdGhlIGxvY2F0aW9uIG9mIHRoZSBjb3VudGllcyBzbyB0aGF0IHRoZSByZXN0IG9mIHRoZSByZXBvcnQgbWFrZXMgc2Vuc2UuCnFtcGxvdChsb24sIGxhdCwgZGF0YSA9IGFjc19ib3N0b24sIGdlb20gPSAiYmxhbmsiKSArCiAgZ2VvbV9wb2x5Z29uKGRhdGE9YWNzX2Jvc3Rvbl9jb3VudHlfY2h1bGxzLCBhZXMoeD1sb24sIHk9bGF0LCBmaWxsPWNvdW50eSksIGFscGhhPTAuOCkKYGBgCgojIyBNZWRpYW4gUmVudAoKVGhlIHBsb3QgYmVsb3cgc2hvd3MgdGhlIG1lZGlhbiByZW50IGluIHRoZSBCb3N0b24tQ2FtYnJpZGdlLU5ld3RvbiBhcmVhIHNwbGl0IGludG8gdGhyZWUgY2F0ZWdvcmllcy4gVGhlIHJlZCBwb2ludHMgcmVwcmVzZW50IGEgbG93ZXIgbWVkaWFuIHJlbnQsIHRoZSBncmVlbiByZXByZXNlbnRzIGEgbWlkLXJhbmdlIG1lZGlhbiByZW50LCBhbmQgdGhlIGJsdWUgcG9pbnRzIHJlcHJlc2VudCBhIGhpZ2ggbWVkaWFuIHJlbnQuIFRoZSBibHVlIHBvaW50cyBhcmUgbGFyZ2VseSBjb25kZW5zZWQgaW4gdGhlIGlubmVyLWNpdHkgKFN1ZmZvbGsgQ291bnR5IGFyZWEpLCB3aGljaCBtYWtlcyBzZW5zZSBhcyBpdCBpcyBnZW5lcmFsbHkgbW9yZSBleHBlbnNpdmUgdG8gbGl2ZSBpbiB0aGUgY2VudGVyIG9mIHRoZSBjaXR5IHRoYW4gb24gdGhlIG91dHNraXJ0cy4gSW4gZmFjdCwgdGhlIEJvc3RvbiBHbG9iZSByZWxlYXNlZCBhIHN0b3J5IGluIDIwMTUgdGhhdCBub3RlZCBhIDE0JSBpbmNyZWFzZSBpbiByZW50IGNvc3RzIGJldHdlZW4gMjAxMyBhbmQgMjAxNCBpbiBqdXN0IHRoZSBTdWZmb2xrIENvdW50eSBhcmVhLCB3aGlsZSBzdXJyb3VuZGluZyBhcmVhcyBvbmx5IHNhdyBhbiBpbmNyZWFzZSBvZiBhYm91dCA1LjUlIChIb3Jvd2l0eiwgMjAxNSkuIFRvIHB1dCB0aGlzIGluY3JlYXNlIGluIHBlcnNwZWN0aXZlLCBUaW1lIE1vbmV5IHJlbGVhc2VkIGEgc3RvcnkgaW4gQXByaWwgb2YgMjAxNiB0aGF0IHJhbmtlZCB0aGUgY2l0eSBvZiBCb3N0b24gIzMgaW4gdGhlIG1vc3QgZXhwZW5zaXZlIGNpdGllcyB0byByZW50IGluIGluIHRoZSBVbml0ZWQgU3RhdGVzLCBzdXJwYXNzZWQgb25seSBieSBTYW4gRnJhbmNpc2NvLCBDQSBhbmQgTmV3IFlvcmsgQ2l0eSwgTlkgKFJlbnp1bGxpLCAyMDE2KS4KCmBgYHtyfQpxbXBsb3QobG9uLCBsYXQsIGRhdGEgPSBhY3NfYm9zdG9uLCBnZW9tID0gImJsYW5rIikgKwogIGdlb21fcG9pbnQoYWVzKGNvbG9yID0gYmluKG1lZGlhbl9yZW50LDMpKSwgYWxwaGEgPSAwLjcpCmBgYAoKIyMgSW5jb21lIGFuZCBSZW50IEFmZm9yZGFiaWxpdHkKCkNvbnNpZGVyaW5nIHRoZSBoaWdoIGNvc3Qgb2YgbGl2aW5nIGluIFN1ZmZvbGsgQ291bnR5LCB0aGUgbmV4dCBwcmFjdGljYWwgcXVlc3Rpb24gaXMgd2hldGhlciB0aGUgYXZlcmFnZSBwZXJzb24gaW4gdGhlc2UgbG9jYXRpb25zIGNhbiBhY3R1YWxseSBhZmZvcmQgc3VjaCBhIGhpZ2ggcHJpY2UuIFRvIGV4YW1pbmUgdGhpcyBxdWVzdGlvbiwgSSBoYXZlIHBsb3R0ZWQgdGhlIGluY29tZXMgb2YgcGVvcGxlIGluIHRoZSBCb3N0b24tQ2FtYnJpZGdlLU5ld3RvbiBhcmVhIGJ5IHRoZSBjb3VudHkgaW4gd2hpY2ggdGhleSByZXNpZGUuIEFsdGhvdWdoIFN1ZmZvbGsgQ291bnR5IGdlbmVyYWxseSBzZWVtcyB0byBiZSB0aGUgbW9zdCBleHBlbnNpdmUgcGxhY2UgdG8gbGl2ZSBvZiBvdXQgb2YgdGhlIGNvdW50aWVzIHN0dWRpZWQsIFN1ZmZvbGsgQ291bnR5IGFsc28gaGFzIHRoZSBoaWdoZXN0IHBlcmNlbnRhZ2Ugb2YgcGVvcGxlIHdpdGggdGhlIGxvd2VzdCBicmFja2V0IGluY29tZSBhdCBhcHByb3hpbWF0ZWx5IDclLiBPdGhlciBjb3VudGllcyB0ZW5kIHRvIGhhdmUgbGVzcyB0aGFuIGhhbGYgb2YgdGhpcyBwZXJjZW50YWdlIG9mIHBlb3BsZSBsaXZpbmcgb24gdGhlIGxvd2VzdCBicmFja2V0IGluY29tZS4gSW50ZXJlc3RpbmdseSwgaXQgYXBwZWFycyB0aGF0IHRoZSBjb3VudGllcyB3aXRoIHRoZSBoaWdoZXN0IHBlcmNlbnRhZ2Ugb2YgcGVvcGxlIGVhcm5pbmcgdGhlIGhpZ2hlc3QgYnJhY2tldCBpbmNvbWUgYXJlIE5vcmZvbGsgYW5kIE1pZGRsZXNleCBDb3VudHksIHdoaWNoIGFyZSBsb2NhdGVkIGRpcmVjdGx5IG91dHNpZGUgb2YgdGhlIFN1ZmZvbGsgQ291bnR5IGFyZWEuIFRoZSBoaWdoIHBlcmNlbnRhZ2Ugb2YgcGVvcGxlIGxpdmluZyBvbiB0aGUgbG93ZXN0IGJyYWNrZXQgaW5jb21lIGluIFN1ZmZvbGsgQ291bnR5IG1heSBiZSBpbmRpY2F0aXZlIG9mIGEgcHJlZG9taW5hbnRseSBwb29yIG5laWdoYm9yaG9vZCBuZWFyIHRoZSBSb3hidXJ5L0RvcmNoZXN0ZXIgYXJlYSwgd2hpY2ggY2FuIGJlIHNlZW4gb24gdGhlIHByZXZpb3VzIGdyYXBoIGluIHRoZSBzbWFsbCBjbHVzdGVyIG9mIHJlZCBkYXRhIHBvaW50cyBqdXN0IGJlbG93IHRoZSAiQm9zdG9uIiB0YWcgKEhhcnZhcmQsIDIwMTgpLiBUaGUgUm94YnVyeSBuZWlnaGJvcmhvb2QgaW4gcGFydGljdWxhciBoYXMgYSBoaWdoIHBlcmNlbnQgb2YgcGVvcGxlIGxpdmluZyBpbiBwb3ZlcnR5LCBhdCBhcHByb3hpbWF0ZWx5IDM2LjIlIGluIGEgcmVwb3J0IGZyb20gYSBmaXZlLXllYXIgZXN0aW1hdGUgYmV0d2VlbiAyMDA4LTIwMTIgKEJSQSBSZXNlYXJjaCBEaXZpc2lvbiwgMjAxNCkuIFN1ZmZvbGsgQ291bnR5IGFsc28gaGFzIHRoZSBsb3dlc3QgbWVkaWFuIGhvdXNlaG9sZCBpbmNvbWUgb3V0IG9mIHRoZSBzdHVkaWVkIGNvdW50aWVzLCBhdCBhcHByb3hpbWF0ZWx5IDU0LDQzMiAyMDE2IGluZmxhdGlvbi1hZGp1c3RlZCBVUyBkb2xsYXJzLiBNZWFud2hpbGUsIE5vcmZvbGsgQ291bnR5IGhhcyB0aGUgaGlnaGVzdCBtZWRpYW4gaG91c2Vob2xkIGluY29tZSBvdXQgb2YgdGhlIHN0dWRpZWQgY291bnRpZXMsIGF0IGFwcHJveGltYXRlbHkgOTAsMjI2IDIwMTYgaW5mbGF0aW9uLWFkanVzdGVkIFVTIGRvbGxhcnMgKFNvY2lhbCBFeHBsb3JlciwgMjAxOCkuCgpgYGB7cn0KZ2dwbG90KGFjc19pbmNvbWUsIGFlcyh2YXJpYWJsZSwgdmFsdWUpKSsKICBnZW9tX2NvbChhZXMoZmlsbCA9IHZhcmlhYmxlKSkgKyAKICBmYWNldF93cmFwKH5jb3VudHkpICsKICBjb29yZF9mbGlwKCkgKyAKICB0aGVtZV9taW5pbWFsKCkKCmBgYAoKIyMgUmFjZQoKSGF2aW5nIG5vdGVkIHRoZSBpbmNvbWUgZGlmZmVyZW5jZXMgaW4gdGhlIHNldCBvZiBjb3VudGllcyBpbiB0aGUgQm9zdG9uLUNhbWJyaWRnZS1OZXd0b24gYXJlYSwgdGhlIGZpbmFsIHF1ZXN0aW9uIHRvIGV4cGxvcmUgaXMgaWYgdGhlcmUgYXJlIGRpZmZlcmVuY2VzIGluIHRoZSBkaXN0cmlidXRpb24gb2YgcGVvcGxlIGlkZW50aWZ5aW5nIGFzIGRpZmZlcmVudCByYWNlcyBhbW9uZyB0aGUgY291bnRpZXMsIGVzcGVjaWFsbHkgYmV0d2VlbiB0aGUgaW5uZXItY2l0eSBhbmQgc3Vycm91bmRpbmcgYXJlYXMuIEFzIHNob3duIGJlbG93LCBlYWNoIG9mIHRoZSBjb3VudGllcyBoYXZlIGEgcHJlZG9taW5hbnRseSB3aGl0ZSBwb3B1bGF0aW9uLCB3aXRoIFJvY2tpbmdoYW0gYW5kIFN0cmFmZm9yZCBDb3VudHkgYmVpbmcgdGhlIGxlYXN0IGRpdmVyc2Ugb2YgdGhlIHNldC4gU3VmZm9sayBDb3VudHksIG9uIHRoZSBvdGhlciBoYW5kLCBpcyB0aGUgbW9zdCByYWNpYWxseSBkaXZlcnNlIGluIHRoZSBCb3N0b24tQ2FtYnJpZGdlLU5ld3RvbiBhcmVhLCB3aXRoIGFwcHJveGltYXRlbHkgNTUuNCUgb2YgdGhlIHBvcHVsYXRpb24gYmVpbmcgV2hpdGUgYWxvbmUsIDIyLjYlIEJsYWNrL0FmcmljYW4tQW1lcmljYW4sIDguNiUgQXNpYW4gYWxvbmUsIDYuMiUgdHdvIG9yIG1vcmUgcmFjZXMsIGFuZCA2LjklIG90aGVyIChTb2NpYWwgRXhwbG9yZXIsIDIwMTgpLiBUaGUgY2F0ZWdvcmllcyBub3QgbWVudGlvbmVkIChQYWNpZmljIElzbGFuZGVyIGFuZCBJbmRpZ2Vub3VzIEFtZXJpY2FuKSBkaWQgbm90IHN1bSB0byBhIHNpZ25pZmljYW50IHBvcnRpb24gb2YgdGhlIHBvcHVsYXRpb24sIGFzIGV2aWRlbnQgaW4gdGhlIHZpc3VhbGl6YXRpb25zIGZvciBhbGwgc3R1ZGllZCBjb3VudGllcy4gICAKCmBgYHtyfQpnZ3Bsb3QoYWNzX3JhY2UsIGFlcyh4ID0gZmFjdG9yKDEpLCB5ID0gdmFsdWUsIGZpbGwgPSB2YXJpYWJsZSkpKwogIGdlb21fYmFyKHdpZHRoID0gMSwgc3RhdD0iaWRlbnRpdHkiKSArIAogIGZhY2V0X3dyYXAofmNvdW50eSkgKwogIGNvb3JkX3BvbGFyKHRoZXRhID0gInkiKSArIAogIHRoZW1lX21pbmltYWwoKSArIAogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGU9IlNwZWN0cmFsIikgKyAKICB5bGFiKCIiKSArIAogIHhsYWIoIiIpICsKICB0aGVtZShheGlzLnRleHQgPSBlbGVtZW50X2JsYW5rKCksIGF4aXMudGlja3MgPSBlbGVtZW50X2JsYW5rKCksIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCkpCgpgYGAKCiMjIENvbmNsdXNpb24KCkRyYXdpbmcgZnJvbSB0aGUgdmlzdWFsaXphdGlvbnMgYW5kIGFuYWx5c2lzIGFib3ZlLCBzZXZlcmFsIGNvbmNsdXNpb25zIGNhbiBiZSBtYWRlIGFib3V0IHRoZSBCb3N0b24tQ2FtYnJpZGdlLU5ld3RvbiBhcmVhLiBTcGVjaWZpY2FsbHksIG1hbnkgb3V0c3RhbmRpbmcgZGlmZmVyZW5jZXMgZXhpc3QgYmV0d2VlbiBpbm5lci1jaXR5IEJvc3RvbiAoU3VmZm9sayBDb3VudHkpIGFuZCB0aGUgc3Vycm91bmRpbmcgYXJlYXMuIEluIHRoZSBmaXJzdCB2aXN1YWxpemF0aW9uLCBpdCB3YXMgc2hvd24gdGhhdCB0aGUgbWVkaWFuIHJlbnQgaXMgZ2VuZXJhbGx5IGhpZ2hlciBpbiBTdWZmb2xrIENvdW50eSB0aGFuIGluIHRoZSBvdGhlciBjb3VudGllcy4gVGhpcyB3YXMgZXhwZWN0ZWQgaW4gdGhlIGRhdGEsIGFzIG1ldHJvcG9saXRhbiBhcmVhcyBhcmUga25vd24gdG8gaGF2ZSBoaWdoZXItY29zdCBob3VzaW5nLiBJbiB0aGUgc2Vjb25kIHZpc3VhbGl6YXRpb24sIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aGUgcGVyY2VudCBvZiBwZW9wbGUgbGl2aW5nIHVuZGVyIGNlcnRhaW4gaW5jb21lIGJyYWNrZXRzIGFuZCB0aGUgY291bnR5IGluIHdoaWNoIHRoZXkgbGl2ZSB3ZXJlIGV4cGxvcmVkLiBJdCB3YXMgZm91bmQgdGhhdCBTdWZmb2xrIENvdW50eSwgdGhlIGlubmVyLWNpdHksIGhhcyB0aGUgaGlnaGVzdCBwZXJjZW50IG9mIHBlb3BsZSBsaXZpbmcgdW5kZXIgdGhlIGxvd2VzdCBpbmNvbWUgYnJhY2tldC4gVGhpcyBjb3VsZCBwb3NzaWJseSBiZSByZXByZXNlbnRhdGl2ZSBvZiB0aGUgcGVvcGxlIGxpdmluZyBpbiBjZXJ0YWluIHBvb3IgbmVpZ2hib3Job29kcyB3aXRoaW4gdGhlIGNpdHkgb2YgQm9zdG9uLiBBbHRlcm5hdGl2ZWx5LCBOb3Jmb2xrIGFuZCBNaWRkbGVzZXggQ291bnRpZXMgaGFkIGEgcmF0aGVyIGhpZ2ggcGVyY2VudGFnZSBvZiBwZW9wbGUgbGl2aW5nIHVuZGVyIHRoZSBsYXJnZXN0IGluY29tZSBicmFja2V0IGFzIGNvbXBhcmVkIHRvIHRoZSBvdGhlciBjb3VudGllcy4gTGFzdGx5LCByYWNpYWwgZGlmZmVyZW5jZXMgaW4gdGhlIHBvcHVsYXRpb24gd2VyZSBleHBsb3JlZCBpbiBlYWNoIGNvdW50eS4gVGhlIGZpbmFsIHZpc3VhbGl6YXRpb24gc2hvd3MgdGhhdCBTdWZmb2xrIENvdW50eSBoYXMgdGhlIGxhcmdlc3QgZGl2ZXJzaXR5IGluIHJhY2UgYW1vbmcgYWxsIHN0dWRpZWQgY291bnRpZXMsIHdoaWxlIHRoZSBwb3B1bGF0aW9ucyBvZiBSb2NraW5naGFtIGFuZCBTdGFmZm9yZCBDb3VudGllcyBhcmUgb3ZlcndoZWxtaW5nbHkgd2hpdGUgd2l0aCB2ZXJ5IGxpdHRsZSBkaXZlcnNpdHkuIAoKIyMgUmVmZXJlbmNlcwoKRGF0YSAmIEFuYWx5c2lzIFJlZmVyZW5jZXM6CgpTb2NpYWwgRXhwbG9yZXIgQUNTIDIwMTYgNS15ZWFyIEVzdGltYXRlcy4gU29jaWFsIEV4cGxvcmVyLCAyMDE4LiAoaHR0cHM6Ly93d3cuc29jaWFsZXhwbG9yZXIuY29tL3RhYmxlcy9BQ1MyMDE2XzV5ci9SMTE2MTM4MjgpCgpCb3N0b24gR2xvYmUsICJIb3VzaW5nIGZvciBNaWRkbGUgQ2xhc3MgRmFtaWxpZXMgaW4gQm9zdG9uIGlzIGEgU3RydWdnbGUiLiBIb3Jvd2l0eiwgMjAxNS4gKGh0dHBzOi8vd3d3LmJvc3Rvbmdsb2JlLmNvbS9idXNpbmVzcy8yMDE1LzA3LzAyL2hvdy1leHBlbnNpdmUtaG91c2luZy1ib3N0b24vUDdDV29IdjMweHZ6MmpKOU05WU1oUC9zdG9yeS5odG1sKQoKQm9zdG9uIE1hZ2F6aW5lLCAiIihodHRwczovL3d3dy5ib3N0b25tYWdhemluZS5jb20vcHJvcGVydHkvMjAxOC8wMi8yMC9taW5pbXVtLXNhbGFyeS1vd24tYXBhcnRtZW50LWJvc3Rvbi8pCgpNb25leSAoVGltZSBJbmMuKSwgIjEwIE1vc3QgRXhwZW5zaXZlIENpdGllcyB0byBiZSBhIFJlbnRlciIuIFJlbnp1bGxpLCAyMDE2LiBodHRwOi8vdGltZS5jb20vbW9uZXkvNDI4NzEzMi9tb3N0LWV4cGVuc2l2ZS1jaXRpZXMtdG8tcmVudC8KCkJvc3RvbiBSZWRldmVsb3BtZW50IEF1dGhvcml0eSAoUmVzZWFyY2ggRGl2aXNpb24pLCAiUG92ZXJ0eSBpbiBCb3N0b24iLiBCUkEgUmVzZWFyY2ggRGl2aXNpb24sIDIwMTQuIChodHRwOi8vd3d3LmJvc3RvbnBsYW5zLm9yZy9nZXRhdHRhY2htZW50L2YxZWNhZjhhLWQ1MjktNDBiNi1hOWJjLThiNDQxOTU4N2I4NikKCkhhcnZhcmQgU2Nob29sIG9mIFB1YmxpYyBIZWFsdGgsICJCb3N0b24gTmVpZ2hib3Job29kIEJvcmRlcnMiLiBIYXJ2YXJkLCAyMDE4LiAoaHR0cHM6Ly93d3cuaHNwaC5oYXJ2YXJkLmVkdS9kaXZlcnNpdHkvbmVpZ2hib3Job29kLW1hcHMvKQoKCgpDb2RlIFJlZmVyZW5jZXM6CgpDb252ZXggSHVsbHMgdG8gc2hvdyBsb2NhdGlvbnMgb2YgZWFjaCBjb3VudHk6IGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL3JtYWlhLzUyOTY0MDEKCkNvbG9yIHRoZW1lczogaHR0cDovL3d3dy5jb29rYm9vay1yLmNvbS9HcmFwaHMvQ29sb3JzXyhnZ3Bsb3QyKS8KClBpZSBjaGFydHM6IGh0dHA6Ly9nZ3Bsb3QyLnRpZHl2ZXJzZS5vcmcvcmVmZXJlbmNlL2Nvb3JkX3BvbGFyLmh0bWwsIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzIyMjQzODYwL2hvdy10by1yZW1vdmUtY29vcmRpbmF0ZS1pbi1waWUtY2hhcnQtZ2VuZXJhdGVkLWJ5LWdncGxvdDIKCg==